package cn.iocoder.yudao.module.erp.dal.mysql.gi;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.erp.dal.dataobject.gi.GiYwDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.erp.controller.admin.gi.giyw.vo.*;

/**
 * ERP物流义乌仓库 Mapper
 * @author 天使管理员
 */
@Mapper
public interface GiYwMapper extends BaseMapperX<GiYwDO> {

    default PageResult<GiYwDO> selectPage(GiYwPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<GiYwDO>()
                .likeIfPresent(GiYwDO::getNo, reqVO.getNo())
                .betweenIfPresent(GiYwDO::getCreateTime, reqVO.getCreateTime())
                .eqIfPresent(GiYwDO::getInCount, reqVO.getInCount())
                .likeIfPresent(GiYwDO::getInName, reqVO.getInName())
                .eqIfPresent(GiYwDO::getInVolume, reqVO.getInVolume())
                .eqIfPresent(GiYwDO::getWeight, reqVO.getWeight())
                .eqIfPresent(GiYwDO::getDensity, reqVO.getDensity())
                .eqIfPresent(GiYwDO::getDeliveryPhone, reqVO.getDeliveryPhone())
                .likeIfPresent(GiYwDO::getDeliveryName, reqVO.getDeliveryName())
                .eqIfPresent(GiYwDO::getEarpayAmount, reqVO.getEarpayAmount())
                .eqIfPresent(GiYwDO::getInPic, reqVO.getInPic())
                .eqIfPresent(GiYwDO::getLine, reqVO.getLine())
                .eqIfPresent(GiYwDO::getCreator, reqVO.getCreator())
                .eqIfPresent(GiYwDO::getFile, reqVO.getFile())
                .eqIfPresent(GiYwDO::getNote, reqVO.getNote())
                .eqIfPresent(GiYwDO::getStatus, reqVO.getStatus())
                .eqIfPresent(GiYwDO::getDeleted,0)
                .orderByDesc(GiYwDO::getId));
    }

    // 获取当前最大 ID
    default String getCurrentMaxOrderNumber() {
        GiYwDO result = selectOne(new LambdaQueryWrapperX<GiYwDO>()
                .select(GiYwDO::getId)
                .orderByDesc(GiYwDO::getId)
                .last("LIMIT 1"));
        // 判断查询结果是否为null
        if (result != null) {
            return result.getId();  // 如果查询到数据，返回ID
        } else {
            return "0001";  // 如果数据库为空，返回一个默认值，如 "0001
        }
    }
}